/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * DatosEstudioCardiologicoPanel.java
 *
 * Created on 27/01/2011, 13:03:42
 */

package presentacion.examen;

import hibernate.objeto.EstudioCardiologia;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JDialog;
import javax.swing.JPanel;
import logica.CapaLogica;
import logica.EstudioCardiologiaLogica;
import presentacion.CapaPresentacion;
import presentacion.utilidad.maquetado.Fuente;
import presentacion.utilidad.maquetado.InformeError;

/**
 *
 * @author Gonzalo
 */
public class DatosEstudioCardiologicoPanel extends javax.swing.JPanel {

    /** Creates new form DatosEstudioCardiologicoPanel */
    public DatosEstudioCardiologicoPanel(EstudioCardiologia estudioCardiologia) {
        this.estudioCardiologia = estudioCardiologia;
        initComponents();
        setearEventosQueCapturanTeclaEnterYEscape();

        if (this.estudioCardiologia != null) {
            personalizarJDialog();
        }
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        textoDescriptivoVisualizacionEstudioCardiologico = new javax.swing.JLabel();
        panelEstudioCardiologico = new javax.swing.JPanel();
        textoTipoDeEstudio = new javax.swing.JLabel();
        nombreDeEstudio = new javax.swing.JComboBox();
        panelEstudioCardiologiaInternoScrollPane = new javax.swing.JScrollPane();
        panelEstudioCardiologiaInterno = new javax.swing.JPanel();

        textoDescriptivoVisualizacionEstudioCardiologico.setFont(Fuente.FUENTE_LABEL);
        textoDescriptivoVisualizacionEstudioCardiologico.setForeground(Fuente.COLOR_NORMAL);
        textoDescriptivoVisualizacionEstudioCardiologico.setText("Ingrese los datos del estudio cardiológico");
        textoDescriptivoVisualizacionEstudioCardiologico.setPreferredSize(new java.awt.Dimension(374, 20));

        panelEstudioCardiologico.setPreferredSize(new java.awt.Dimension(417, 495));
        panelEstudioCardiologico.setRequestFocusEnabled(false);
        panelEstudioCardiologico.setVerifyInputWhenFocusTarget(false);

        textoTipoDeEstudio.setFont(Fuente.FUENTE_LABEL);
        textoTipoDeEstudio.setText("Seleccione el tipo de estudio");
        textoTipoDeEstudio.setPreferredSize(new java.awt.Dimension(138, 20));

        nombreDeEstudio.setFont(Fuente.FUENTE_TEXTFIELD);
        nombreDeEstudio.setModel(CapaPresentacion.getListaDeNombreDeEstudioCardiologia());
        nombreDeEstudio.setPreferredSize(new java.awt.Dimension(217, 20));
        nombreDeEstudio.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                nombreDeEstudioActionPerformed(evt);
            }
        });

        panelEstudioCardiologiaInternoScrollPane.setBorder(null);
        panelEstudioCardiologiaInternoScrollPane.setPreferredSize(new java.awt.Dimension(394, 316));
        panelEstudioCardiologiaInternoScrollPane.setRequestFocusEnabled(false);

        panelEstudioCardiologiaInterno.setPreferredSize(new java.awt.Dimension(394, 401));
        panelEstudioCardiologiaInterno.setLayout(new javax.swing.BoxLayout(panelEstudioCardiologiaInterno, javax.swing.BoxLayout.LINE_AXIS));
        panelEstudioCardiologiaInternoScrollPane.setViewportView(panelEstudioCardiologiaInterno);

        javax.swing.GroupLayout panelEstudioCardiologicoLayout = new javax.swing.GroupLayout(panelEstudioCardiologico);
        panelEstudioCardiologico.setLayout(panelEstudioCardiologicoLayout);
        panelEstudioCardiologicoLayout.setHorizontalGroup(
            panelEstudioCardiologicoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEstudioCardiologicoLayout.createSequentialGroup()
                .addContainerGap()
                .addGroup(panelEstudioCardiologicoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addComponent(panelEstudioCardiologiaInternoScrollPane, javax.swing.GroupLayout.Alignment.TRAILING, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                    .addGroup(panelEstudioCardiologicoLayout.createSequentialGroup()
                        .addComponent(textoTipoDeEstudio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(nombreDeEstudio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)))
                .addContainerGap())
        );
        panelEstudioCardiologicoLayout.setVerticalGroup(
            panelEstudioCardiologicoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelEstudioCardiologicoLayout.createSequentialGroup()
                .addGroup(panelEstudioCardiologicoLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(nombreDeEstudio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(textoTipoDeEstudio, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE))
                .addGap(11, 11, 11)
                .addComponent(panelEstudioCardiologiaInternoScrollPane, javax.swing.GroupLayout.DEFAULT_SIZE, 402, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(this);
        this.setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING)
                    .addComponent(panelEstudioCardiologico, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE)
                    .addComponent(textoDescriptivoVisualizacionEstudioCardiologico, javax.swing.GroupLayout.Alignment.LEADING, javax.swing.GroupLayout.DEFAULT_SIZE, 414, Short.MAX_VALUE))
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addComponent(textoDescriptivoVisualizacionEstudioCardiologico, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
                .addComponent(panelEstudioCardiologico, javax.swing.GroupLayout.DEFAULT_SIZE, 444, Short.MAX_VALUE)
                .addContainerGap())
        );
    }// </editor-fold>//GEN-END:initComponents

    private void nombreDeEstudioActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_nombreDeEstudioActionPerformed
        guardaPanel();
        eliminarPanel();
        cargaPanel();
}//GEN-LAST:event_nombreDeEstudioActionPerformed

    /**
     * Carga el panel con el tipo de estudio seleccionado.
     */
    private void cargaPanel() {
        //ECG
        if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("ECG")) {
            DatosECGPanel datosECGPanelLocal =
                    new DatosECGPanel();
            if (datosECGPanel != null) {
                datosECGPanelLocal = datosECGPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosECGPanelLocal);
        //ECOCARDIOGRAMA
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Ecocardiograma")) {
            DatosEcocardiogramaPanel datosEcocardiogramaPanelLocal =
                    new DatosEcocardiogramaPanel();
            if (datosEcocardiogramaPanel != null) {
                datosEcocardiogramaPanelLocal =
                        datosEcocardiogramaPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosEcocardiogramaPanelLocal);
        //ERGONOMETRIA
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Ergometría")) {
            DatosErgometriaPanel datosErgonometriaPanelLocal =
                    new DatosErgometriaPanel();
            if (datosErgonometriaPanel != null) {
                datosErgonometriaPanelLocal =
                        datosErgonometriaPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosErgonometriaPanelLocal);
        //ECOESTRESS
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Ecoestress")) {
            DatosEcoestressPanel datosEcoestressPanelLocal =
                    new DatosEcoestressPanel();
            if (datosEcoestressPanel != null) {
                datosEcoestressPanelLocal = datosEcoestressPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosEcoestressPanelLocal);
        //HOLTER
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Holter")) {
            DatosHolterPanel datosHolterPanelLocal =
                    new DatosHolterPanel();
            if (datosHolterPanel != null) {
                datosHolterPanelLocal =
                        datosHolterPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosHolterPanelLocal);
        //HOLTER DE PRESION
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Holter de Presión")) {
            DatosHolterDePresionPanel datosHolterDePresionPanelLocal =
                    new DatosHolterDePresionPanel();
            if (datosHolterDePresionPanel != null) {
                datosHolterDePresionPanelLocal =
                        datosHolterDePresionPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosHolterDePresionPanelLocal);
        //TILT TEST
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Tilt Test")) {
            DatosTilTestPanel datosTilTestPanelLocal =
                    new DatosTilTestPanel();
            if (datosTilTestPanel != null) {
                datosTilTestPanelLocal =
                        datosTilTestPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosTilTestPanelLocal);
        //ELECTROFISIOLOGICO
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Electrofisiológico")) {
            DatosElectrofisiologicoPanel datosElectrofisiologicoPanelLocal =
                    new DatosElectrofisiologicoPanel();
            if (datosElectrofisiologicoPanel != null) {
                datosElectrofisiologicoPanelLocal =
                        datosElectrofisiologicoPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosElectrofisiologicoPanelLocal);
        //CINECORONOARIOGRAFIA
        } else if (nombreDeEstudio.getSelectedItem().toString().
                equalsIgnoreCase("Cinecoronoariografía")) {
            DatosCinecoronoariografiaPanel datosCinecoronoariografiaPanelLocal =
                    new DatosCinecoronoariografiaPanel();
            if (datosCinecoronoariografiaPanel != null) {
                datosCinecoronoariografiaPanelLocal =
                        datosCinecoronoariografiaPanel;
            }
            agregarPanel(panelEstudioCardiologiaInterno,
                    datosCinecoronoariografiaPanelLocal);
        }
    }

    /**
     * Al seleccionar un nuevo estudio, el panel del estudio actual que se
     * encuentra cargado se guarda en una variable local, para luego volver a
     * accederlo al volver a seleccionarlo.
     */
    private void guardaPanel() {
        int paneles = panelEstudioCardiologiaInterno.getComponents().length;
        if (paneles > 0) {
            JPanel panelAGuardar = (JPanel) panelEstudioCardiologiaInterno.
                    getComponents()[0];
            if (panelAGuardar instanceof DatosECGPanel) {
                datosECGPanel = (DatosECGPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosEcocardiogramaPanel) {
                datosEcocardiogramaPanel = (DatosEcocardiogramaPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosErgometriaPanel) {
                datosErgonometriaPanel = (DatosErgometriaPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosEcoestressPanel) {
                datosEcoestressPanel = (DatosEcoestressPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosHolterPanel) {
                datosHolterPanel = (DatosHolterPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosHolterDePresionPanel) {
                datosHolterDePresionPanel = (DatosHolterDePresionPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosTilTestPanel) {
                datosTilTestPanel = (DatosTilTestPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosElectrofisiologicoPanel) {
                datosElectrofisiologicoPanel =
                        (DatosElectrofisiologicoPanel) panelAGuardar;
            } else if (panelAGuardar instanceof DatosCinecoronoariografiaPanel) {
                datosCinecoronoariografiaPanel =
                        (DatosCinecoronoariografiaPanel) panelAGuardar;
            }
        }
    }

    /**
     * Quita el panel al seleccionar otro estudio.
     */
    private void eliminarPanel() {
        int paneles = panelEstudioCardiologiaInterno.getComponents().length;
        if (paneles > 0) {
            panelEstudioCardiologiaInterno.remove(
                    panelEstudioCardiologiaInterno.getComponents()[0]);
            panelEstudioCardiologiaInterno.revalidate();
            panelEstudioCardiologiaInterno.repaint();
        }
    }

    /**
     * Agrega un panel a un panel.
     *
     * @param panelContenedor El panel que contiene al panel que se agregará
     * @param panelComponente El panel componente que se agregará
     */
    private void agregarPanel(JPanel panelContenedor, JPanel panelComponente) {
        panelContenedor.add(panelComponente);
        panelContenedor.revalidate();
        panelContenedor.repaint();
    }

    /**
     * Realiza la validación de los datos
     *
     * @return true si esta listo para cargarse, false en caso contrario
     */
    public boolean validarCamposEstudioCardiologia() {
        int paneles = panelEstudioCardiologiaInterno.getComponents().length;
        if (paneles > 0) {
            textoTipoDeEstudio.setForeground(Fuente.COLOR_NORMAL);
            textoTipoDeEstudio.setToolTipText(null);
            JPanel panelAValidar = (JPanel) panelEstudioCardiologiaInterno.
                    getComponents()[0];
            if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Cinecoronoariografía")) {
                return ((DatosCinecoronoariografiaPanel) panelAValidar).
                        validarCampos();
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ecoestress")) {
                return ((DatosEcoestressPanel) panelAValidar).
                        validarCampos();
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ergometría")) {
                return ((DatosErgometriaPanel) panelAValidar).
                        validarCampos();
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter")) {
                return ((DatosHolterPanel) panelAValidar).
                        validarCampos();
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter de Presión")) {
                return ((DatosHolterDePresionPanel) panelAValidar).
                        validarCampos();
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Tilt Test")) {
                return ((DatosTilTestPanel) panelAValidar).
                        validarCampos();
            } else {
                return true;
            }
        } else {
            textoTipoDeEstudio.setForeground(Fuente.COLOR_ERROR);
            textoTipoDeEstudio.setToolTipText(InformeError.
                    INFORME_ERROR_CARDIOLOGICO_TIPO_ESTUDIO);
            return false;
        }
    }

    /**
     * Agrega un estudio cardiológico.
     *
     * @return true si se agregó correctamente, false en caso contrario.
     */
    public boolean agregarEstudioCardiologia(int[] idObjetoCreado, 
            EstudioCardiologia estudioCardiologia) {
            this.estudioCardiologia =
                    estudioCardiologia;
            //Carga toda la información de la pantalla
            recopilarDatos();
            //Agrega el estudio cardiológico
            if ((EstudioCardiologiaLogica.agregarEstudioCardiologia(
                    datosEstudioCardiologico,
                    estudioCardiologia, idObjetoCreado))) {
                return true;
            } else {
                return false;
            }
    }

    /**
     * Recopila los datos para luego poder crear los objetos.
     */
    private void recopilarDatos() {
        int paneles = panelEstudioCardiologiaInterno.getComponents().length;
        if (paneles > 0) {
                JPanel panelAlQueSeRecopilaDatos =
                        (JPanel) panelEstudioCardiologiaInterno.
                        getComponents()[0];

            datosEstudioCardiologico = new Object[76];

            datosEstudioCardiologico[CapaLogica.ESTUDIO_CARDIOLOGIA_NOMBRE] =
                    nombreDeEstudio.getSelectedItem();

            if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("ECG")) {
                datosEstudioCardiologico[CapaLogica.ESTUDIO_CARDIOLOGIA_ECG] =
                        true;
                //Recopila los datos en el panel
                ((DatosECGPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ecocardiograma")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_ECOCARDIOGRAMA] =
                        true;
                //Recopila los datos en el panel
                ((DatosEcocardiogramaPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ergometría")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_ERGOMETRIA] =
                        true;
                //Recopila los datos en el panel
                ((DatosErgometriaPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ecoestress")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_ECOESTRESS] =
                        true;
                //Recopila los datos en el panel
                ((DatosEcoestressPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_HOLTER] =
                        true;
                //Recopila los datos en el panel
                ((DatosHolterPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter de Presión")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_HOLTER_DE_PRESION] =
                        true;
                //Recopila los datos en el panel
                ((DatosHolterDePresionPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Tilt Test")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_TILT_TEST] =
                        true;
                //Recopila los datos en el panel
                ((DatosTilTestPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Electrofisiológico")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_ELECTROFISIOLOGICO] =
                        true;
                //Recopila los datos en el panel
                ((DatosElectrofisiologicoPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);

            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Cinecoronoariografía")) {
                datosEstudioCardiologico[CapaLogica.
                        ESTUDIO_CARDIOLOGIA_CINECORONOARIOGRAFIA] =
                        true;
                //Recopila los datos en el panel
                ((DatosCinecoronoariografiaPanel) panelAlQueSeRecopilaDatos).
                        recopilarDatos(datosEstudioCardiologico);
            }
        }
    }

    /**
     * Setea datos de la ventana.
     */
    public void personalizarJDialog() {
        this.estudioCardiologia = estudioCardiologia;
        if (estudioCardiologia.getNombreEstudioCardiologia() != null) {
            exhibirDatosEnPantalla();
            if(CapaPresentacion.modoVisualizacion) {
                inhabilitarCampos();
            }
            personalizarJPanels();
        }
    }

    /**
     * Permite visualizar los detalles de la evolución.
     *
     */
    private void exhibirDatosEnPantalla() {
        nombreDeEstudio.getModel().setSelectedItem(
                            estudioCardiologia.getNombreEstudioCardiologia());
    }

    /**
     * Pone en false la propiedad enabled de todos los campos de ingreso.
     *
     */
    private void inhabilitarCampos() {
        nombreDeEstudio.setEnabled(false);
    }

    /**
     * Personaliza los JPanels según el tipo de estudio.
     */
    private void personalizarJPanels() {
        int paneles = panelEstudioCardiologiaInterno.getComponents().length;
        if (paneles > 0) {
            JPanel panelAPersonalizar = (JPanel) panelEstudioCardiologiaInterno.
                    getComponents()[0];
            if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ecocardiograma")) {
                ((DatosEcocardiogramaPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getEcocardiogramaEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Cinecoronoariografía")) {
                ((DatosCinecoronoariografiaPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getCinecoronoariografiaEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("ECG")) {
                ((DatosECGPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getEcgEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ecoestress")) {
                ((DatosEcoestressPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getEcoestressEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Ergometría")) {
                ((DatosErgometriaPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getErgometriaEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter")) {
                ((DatosHolterPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getHolterEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Electrofisiológico")) {
                ((DatosElectrofisiologicoPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getElectrofisiologicoEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Holter de Presión")) {
                ((DatosHolterDePresionPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getHolterDePresionEstudioCardiologia());
            } else if (nombreDeEstudio.getSelectedItem().toString().
                    equalsIgnoreCase("Tilt Test")) {
                ((DatosTilTestPanel) panelAPersonalizar).
                        personalizarJDialog(estudioCardiologia.
                        getTilTestEstudioCardiologia());
            }
        }
    }

    /**
     * Setea en cada componente del JDialog los eventos que capturarán la tecla
     * enter y escape.
     */
    private void setearEventosQueCapturanTeclaEnterYEscape() {
        //Declaración del evento a capturar
        KeyListener keyListenerEscape = new KeyAdapter() {
            public void keyPressed(java.awt.event.KeyEvent evt) {
                if (evt.getKeyCode() == KeyEvent.VK_ESCAPE) {
                    cerrarVentana();
                }
            }
        };

        //Setear eventos
        nombreDeEstudio.addKeyListener(keyListenerEscape);
    }

    private void cerrarVentana() {
        JDialog jdialog = (JDialog)
                this.getParent().getParent().getParent().getParent().
                getParent().getParent().getParent().getParent();
        jdialog.dispose();
    }

    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JComboBox nombreDeEstudio;
    private javax.swing.JPanel panelEstudioCardiologiaInterno;
    private javax.swing.JScrollPane panelEstudioCardiologiaInternoScrollPane;
    private javax.swing.JPanel panelEstudioCardiologico;
    private javax.swing.JLabel textoDescriptivoVisualizacionEstudioCardiologico;
    private javax.swing.JLabel textoTipoDeEstudio;
    // End of variables declaration//GEN-END:variables
    private Object[] datosEstudioCardiologico;
    private DatosECGPanel datosECGPanel;
    private DatosEcoestressPanel datosEcoestressPanel;
    private DatosEcocardiogramaPanel datosEcocardiogramaPanel;
    private DatosErgometriaPanel datosErgonometriaPanel;
    private DatosHolterPanel datosHolterPanel;
    private DatosHolterDePresionPanel datosHolterDePresionPanel;
    private DatosTilTestPanel datosTilTestPanel;
    private DatosElectrofisiologicoPanel datosElectrofisiologicoPanel;
    private DatosCinecoronoariografiaPanel datosCinecoronoariografiaPanel;
    private EstudioCardiologia estudioCardiologia;
}
